#coding: utf-8
#!/usr/bin/env python
"""
Este código é um exemplo retirado do 
http://www.pythonbrasil.com.br/moin.cgi/ComparacaoDeGUIs
PyFLTK

FLTK (pronuncia-se fulltick) significa Fast Light Toolkit 
ou Toolkit rápido e leve. Ele cumpre exatamente o que promete, 
é rapido e não compromete a memória 
(você pode usar para programar para um 386 com 4Mb). 
A API utiliza chamadas ao sistema gráfico em uso para criar 
seus componentes, o que os mantem idênticos, indepente do 
sistema operacional (aliás, de uma maneira semelhante ao Tk, 
só que quando bem configurado, ficam bonitos) e isso 
aumenta a portabilidade. FLTK roda em mais plataformas 
que o próprio Python (existe inclusive uma versão para DOS 16 bits).

Licença: LGPL
Plataformas: Linux, FreeBSD, Windows, Solaris, Amiga, Dos, MacOS, OpenBSD
Website: http://pyfltk.sourceforge.net/ (http://www.fltk.org/)
Vantagens:
    * Rápido e portável, o aprendizado também é bem simples, 
tão fácil ou mais que o Tk, só que mais completo. 

Desvantagens:
    * A principal desvantagem dele é no quesito posicionamento 
de widgets, ele só trabalha na base do x,y, o que torna a programação 
impossível sem um construtor de interface (ou, pelo menos, muito chata). 
Em C++ tem o FLUID, que vem com ele, só que o pyconvert, 
que vem no PyFLTK, não consegue converter todo o código da saída 
do FLUID para Python (parece que ele não converte classes e alguns 
outros recursos), o que torna desagradável a programação (primeiro, 
desenha-se toda a janela, depois gera-se o código e transforma-se 
o mesmo em objeto, então, se quiser mudar a janela, tem que ser na mão).
"""

from fltk import *
import sys
from string import *

def theCancelButtonCallback(ptr, data):
        print "type = ", type(ptr)
        print "theCancelButtonCallback(%s)"%str(data)

window = Fl_Window(100, 100, 200, 90)
window.label(sys.argv[0])
button = Fl_Button(9,20,180,50)
button.label("Hello World")
button.labeltype(FL_EMBOSSED_LABEL)
button.callback(theCancelButtonCallback, "'some callback data'")

window.end()
window.show(len(sys.argv), sys.argv)
Fl.run()

